iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Google Developers Machine Learning

初心者的自我挑戰系列 第 19

菜雞 Pytorch MNIST 實戰 part2

  • 分享至 

  • xImage
  •  

今天繼續學習,回到昨天的部份,昨天完成了資料的前處理與讀取.
今天接續昨天的部份開始搭建神經網路,

class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
#搭建網路的起手式,nn.module是所有網路的基類.
#我們開始定義一系列網路如下:  #train data = (1,28,28)      
        self.conv1 = nn.Sequential(
            nn.Conv2d(           
            #convolution2D
                in_channels=1,  
                #input channel(EX:RGB)
                out_channels=16, 
                #output feature maps
                kernel_size=5,   
                #filter大小
                stride=1,        
                #每次convolution移動多少
                padding=2,       
                #在圖片旁邊補0                       
            ),
            nn.ReLU(), #activation function #(16,28,28)
            nn.MaxPool2d(kernel_size = 2), #(16,14,14)
        )
        #以上為一層conv + ReLu + maxpool
        
        #快速寫法:
        self.conv2 = nn.Sequential(
            nn.Conv2d(16,32,5,1,2),  #(32,14,14)
            nn.ReLU(), 
            nn.MaxPool2d(2)   #(32,7,7)
        )
        
        self.out = nn.Linear(32*7*7, 10) #10=0~9
       
   def forward(self,x):
       x = self.conv1(x)
       x = self.conv2(x)
       x = x.view(x.size(0), -1)
       output = self.out(x)
       return output
       
#forward流程:
#x = x.view(x.size(0), -1) 展平data    

以上就完成神經網路的搭建.

cnn = CNN()
if if_use_gpu:
    cnn = cnn.cuda()

使用cuda加速.

optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)
loss_function = nn.CrossEntropyLoss()

#優化器使用Adam
#loss_func 使用CrossEntropy(classification task)

明天繼續完成最後一part~


上一篇
菜雞 Pytorch MNIST 實戰
下一篇
菜雞 Pytorch MNIST 實戰 final part
系列文
初心者的自我挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言